const express=require('express');
const routes=express.Router();

const mysql=require('mysql');
var pool=mysql.createPool({
//    最大链接数
    connectionLimit:10,
//    主机
    host:'localhost',
//    数据库登陆用户名
    user:'root',
//    登录密码
    password:'123456',
//    当前项目链接的数据库
    database:'stutest'
})
//设置路由规则
routes.get('/',(req,resp)=>{
//    1.获取cookie中的uid和posts
    const uid=req.cookies.uid;
    if(req.cookies.posts==1){
        var posts='教师';
    }
    //渲染视图
    resp.render('sel_scores',{
        uid:uid,
        posts:posts,
    });

})
//ajax的post异步请求
routes.post('/',(req,resp)=>{
//    通过body-person中间件接收异步提交的数据
//   1.获取ajax提交过来的学期号
    var num=req.body.num;
//    2.获取当前登录者的专业id    cookie
    var sub_id=req.cookies.sub_id;
//    3.查询当前专业指定学期的所有学生成绩
    var sql_score=`select scores.scores,scores.uid,stu_msg.stu_name,sub_class.class_name,sub_class.num from scores left join stu_msg on scores.uid=stu_msg.uid left join sub_class on scores.class_id=sub_class.id where sub_class.sub_id= ${sub_id} and sub_class.num=${num}`
//4.链接数据库
    pool.getConnection((error,connection)=>{
        if(error) throw error;
    //    5.执行查询所有成绩的sql语句
        connection.query(sql_score,(errs,result)=>{
        //    6.查询当前专业指定学期内有成绩的人有哪些
            var sql_stu=`select distinct scores.uid from scores left join sub_class on scores.class_id=sub_class.id where sub_class.sub_id=${sub_id} and sub_class.num=${num}`
        //    7.执行查询当前学期有成绩的人的名单
            connection.query(sql_stu,(err,res)=>{
                connection.release();
                //8.声明一个一维空数组
                var scores=[];
                //9.将有成绩的uid数组进行循环，保证空数组内有16个数据
                res.forEach((item,index)=>{
                //    10.循环当前专业指定学期的所有成绩
                    result.forEach((list)=>{
                    //    每个人相应数组元素设置为空数组
                        if(!scores[index]) scores[index]=[];
                    //    判断如果所有成绩的数组在循环过程中result的uid，跟名单res里面的uid一致：将result的当前数据挪到空数组里面
                        if(list.uid==item.uid){
                            scores[index].push(list);
                        }
                    })
                })
                //发送出去
                resp.send(scores);
                if(err) throw  err;
            })
            if(errs) throw  errs;
        })
    })
})

//允许访问路由实例
module.exports=routes;